home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Tools / Text-Viewer / MSWordView / mswordview_src / table.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-11-06  |  12.1 KB  |  550 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "config.h"
  5. #include "mswordview.h"
  6.  
  7. #define AUTO 0xff
  8. U16 colorlookupr[17] = {AUTO,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x87,0x87,0x87,0xa9,0xd3};
  9. U16 colorlookupg[17] = {AUTO,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x87,0x87,0x00,0x00,0x87,0xa9,0xd3};
  10. U16 colorlookupb[17] = {AUTO,0x00,0xff,0xff,0x00,0xff,0x00,0x00,0xff,0x87,0x87,0x00,0x87,0x00,0x00,0xa9,0xd3};
  11.  
  12. extern FILE *erroroutput;
  13. extern FILE *outputfile;
  14. extern int colcount;
  15. extern int rowcount;
  16. extern char backgroundcolor[8];
  17.  
  18. int do_tablelooks(pap *apap)
  19.     {
  20.     tablelook temp;
  21.     char *acolor=NULL;
  22.     char red[3];
  23.     char green[3];
  24.     char blue[3];
  25.     U16 templ;
  26.     /*check to see if we are supposed to use the background color of this table style*/
  27.  
  28.     error(erroroutput,"itl is %d, colcount is %d, rowcount is %d\n",apap->ourtap.tlp.itl,colcount,rowcount);
  29.  
  30.     switch(apap->ourtap.tlp.itl)
  31.         {
  32.         case 3:
  33.             temp.color[0]="#000000";
  34.             temp.color[1]="#000000";
  35.             temp.color[2]="#000000";
  36.             temp.color[3]=NULL;
  37.             temp.color[4]=NULL;
  38.             temp.color[5]=NULL;
  39.             temp.color[6]=NULL;
  40.             temp.color[7]=NULL;
  41.             temp.color[8]=NULL;
  42.             break;
  43.         case 5:
  44.             temp.color[0]="#780078";
  45.             temp.color[1]="#780078";
  46.             temp.color[2]="#780078";
  47.             temp.color[3]="#c0c0c0";
  48.             temp.color[4]="#ffffff";
  49.             temp.color[5]="#ffffff";
  50.             temp.color[6]="#c0c0c0";
  51.             temp.color[7]="#ffffff";
  52.             temp.color[8]="#ffffff";
  53.             break;
  54.         case 6:
  55.             temp.color[0]="#000078";
  56.             temp.color[1]="#000078";
  57.             temp.color[2]="#000078";
  58.             temp.color[3]="#c0c0c0";
  59.             temp.color[4]="#c0c0c0";
  60.             temp.color[5]="#c0c0c0";
  61.             temp.color[6]="#c0c0c0";
  62.             temp.color[7]="#c0c0c0";
  63.             temp.color[8]="#c0c0c0";
  64.             break;
  65.         case 7:
  66.             temp.color[0]="#787cb8";
  67.             temp.color[1]="#787cb8";
  68.             temp.color[2]="#787cb8";
  69.             temp.color[3]="#ffffff";
  70.             temp.color[4]="#ffffff";
  71.             temp.color[5]="#ffffff";
  72.             temp.color[6]="#ffffff";
  73.             temp.color[7]="#ffffff";
  74.             temp.color[8]="#ffffff";
  75.             break;
  76.         case 8:
  77.             temp.color[0]="#000000";
  78.             temp.color[1]="#000000";
  79.             temp.color[2]="#000000";
  80.             temp.color[3]="#000078";
  81.             temp.color[4]="#007c78";
  82.             temp.color[5]="#007c78";
  83.             temp.color[6]="#000078";
  84.             temp.color[7]="#007c78";
  85.             temp.color[8]="#007c78";
  86.             break;
  87.         case 9:
  88.             temp.color[0]="#780000";
  89.             temp.color[1]="#780000";
  90.             temp.color[2]="#780000";
  91.             temp.color[3]="#f8fcc8";
  92.             temp.color[4]="#f8fcc8";
  93.             temp.color[5]="#f8fcc8";
  94.             temp.color[6]="#f8fcc8";
  95.             temp.color[7]="#f8fcc8";
  96.             temp.color[8]="#f8fcc8";
  97.             break;
  98.         case 10:
  99.             temp.color[0]="#000000";
  100.             temp.color[1]="#007c78";
  101.             temp.color[2]="#007c78";
  102.             temp.color[3]="#007c78";
  103.             temp.color[4]="#b8dcd8";
  104.             temp.color[5]="#b8dcd8";
  105.             temp.color[6]="#007c78";
  106.             temp.color[7]="#b8dcd8";
  107.             temp.color[8]="#b8dcd8";
  108.             break;
  109.         case 11:
  110.             temp.color[0]="#c0c0c0";
  111.             temp.color[1]="#c0c0c0";
  112.             temp.color[2]="#f8fcc8";
  113.             temp.color[3]="#c0c0c0";
  114.             temp.color[4]="#c0c0c0";
  115.             temp.color[5]="#f8fcc8";
  116.             temp.color[6]="#c0c0c0";
  117.             temp.color[7]="#c0c0c0";
  118.             temp.color[8]="#f8fcc8";
  119.             break;
  120.         case 12:
  121.             temp.color[0]="#000078";
  122.             temp.color[1]="#000078";
  123.             temp.color[2]="#000078";
  124.             temp.color[3]="#c0c0c0";
  125.             temp.color[4]="#c0c0c0";
  126.             temp.color[5]="#b8fcb8";
  127.             temp.color[6]="#c0c0c0";
  128.             temp.color[7]="#c0c0c0";
  129.             temp.color[8]="#b8fcb8";
  130.             break;
  131.         case 13:
  132.             temp.color[0]="#000078";
  133.             temp.color[1]="#000078";
  134.             temp.color[2]="#000078";
  135.             temp.color[3]="#c0c0c0";
  136.             temp.color[4]="#c0c0c0";
  137.             temp.color[5]="#e5e5e5";
  138.             temp.color[6]="#c0c0c0";
  139.             temp.color[7]="#c0c0c0";
  140.             temp.color[8]="#e5e5e5";
  141.             break;
  142.         case 14:
  143.             temp.color[0]="#000000";
  144.             temp.color[1]="#000000";
  145.             temp.color[2]="#000000";
  146.             temp.color[3]="#b8dcd8";
  147.             temp.color[4]="#b8dcd8";
  148.             temp.color[5]="#e5e5e5";
  149.             temp.color[6]="#b8dcd8";
  150.             temp.color[7]="#b8dcd8";
  151.             temp.color[8]="#e5e5e5";
  152.             break;
  153.         case 15:
  154.             temp.color[0]="#c0c0c0";
  155.             temp.color[1]="#c0c0c0";
  156.             temp.color[2]="#c0c0c0";
  157.             temp.color[3]="#c0c0c0";
  158.             temp.color[4]="#c0c0c0";
  159.             temp.color[5]="#c0c0c0";
  160.             temp.color[6]="#c0c0c0";
  161.             temp.color[7]="#c0c0c0";
  162.             temp.color[8]="#c0c0c0";
  163.             break;
  164.         case 18:
  165.         case 19:
  166.             temp.color[0]="#f8fcc8";
  167.             temp.color[1]="#f8fcc8";
  168.             temp.color[2]="#f8fcc8";
  169.             temp.color[3]=NULL;
  170.             temp.color[4]=NULL;
  171.             temp.color[5]=NULL;
  172.             temp.color[6]=NULL;
  173.             temp.color[7]=NULL;
  174.             temp.color[8]=NULL;
  175.             break;
  176.         case 23:
  177.             temp.color[0]="#000078";
  178.             temp.color[1]="#000078";
  179.             temp.color[2]="#000078";
  180.             temp.color[3]=NULL;
  181.             temp.color[4]=NULL;
  182.             temp.color[5]=NULL;
  183.             temp.color[6]=NULL;
  184.             temp.color[7]=NULL;
  185.             temp.color[8]=NULL;
  186.             break;
  187.         case 24:
  188.             temp.color[0]="#c0c0c0";
  189.             temp.color[1]="#c0c0c0";
  190.             temp.color[2]="#c0c0c0";
  191.             temp.color[3]="#ffffff";
  192.             temp.color[4]="#ffffff";
  193.             temp.color[5]="#ffffff";
  194.             temp.color[6]="#c0c0c0";
  195.             temp.color[7]="#c0c0c0";
  196.             temp.color[8]="#c0c0c0";
  197.             break;
  198.         case 25:
  199.             temp.color[0]="#007c78";
  200.             temp.color[1]="#007c78";
  201.             temp.color[2]="#007c78";
  202.             temp.color[3]="#b8fcb8";
  203.             temp.color[4]="#b8fcb8";
  204.             temp.color[5]="#b8fcb8";
  205.             temp.color[6]="#b8fcb8";
  206.             temp.color[7]="#b8fcb8";
  207.             temp.color[8]="#b8fcb8";
  208.             break;
  209.         case 27:
  210.             temp.color[0]="#787c78";
  211.             temp.color[1]="#787c78";
  212.             temp.color[2]="#787c78";
  213.             temp.color[3]=NULL;
  214.             temp.color[4]=NULL;
  215.             temp.color[5]=NULL;
  216.             temp.color[6]=NULL;
  217.             temp.color[7]=NULL;
  218.             temp.color[8]=NULL;
  219.             break;
  220.         case 30:
  221.             temp.color[0]="#c0c0c0";
  222.             temp.color[1]="#c0c0c0";
  223.             temp.color[2]="#c0c0c0";
  224.             temp.color[3]="#f8fcc8";
  225.             temp.color[4]="#f8fcc8";
  226.             temp.color[5]="#f8fcc8";
  227.             temp.color[6]="#c0c0c0";
  228.             temp.color[7]="#c0c0c0";
  229.             temp.color[8]="#c0c0c0";
  230.             break;
  231.         case 31:
  232.             temp.color[0]="#ffff00";
  233.             temp.color[1]="#ffff00";
  234.             temp.color[2]="#ffff00";
  235.             temp.color[3]="#f87c78";
  236.             temp.color[4]="#f87c78";
  237.             temp.color[5]="#f87c78";
  238.             temp.color[6]="#f8fcc8";
  239.             temp.color[7]="#f8fcc8";
  240.             temp.color[8]="#f8fcc8";
  241.             break;
  242.         case 32:
  243.         case 33:
  244.             temp.color[0]="#c0c0c0";
  245.             temp.color[1]="#c0c0c0";
  246.             temp.color[2]="#c0c0c0";
  247.             temp.color[3]="#c0c0c0";
  248.             temp.color[4]="#c0c0c0";
  249.             temp.color[5]="#c0c0c0";
  250.             temp.color[6]="#c0c0c0";
  251.             temp.color[7]="#c0c0c0";
  252.             temp.color[8]="#c0c0c0";
  253.             break;
  254.         case 34:
  255.             temp.color[0]="#c0c0c0";
  256.             temp.color[1]="#c0c0c0";
  257.             temp.color[2]="#d8dcd8";
  258.             temp.color[3]="#c0c0c0";
  259.             temp.color[4]="#c0c0c0";
  260.             temp.color[5]="#d8dcd8";
  261.             temp.color[6]="#c0c0c0";
  262.             temp.color[7]="#c0c0c0";
  263.             temp.color[8]="#d8dcd8";
  264.             break;
  265.         case 37:
  266.             temp.color[0]="#000000";
  267.             temp.color[1]="#000000";
  268.             temp.color[2]="#000000";
  269.             temp.color[3]=NULL;
  270.             temp.color[4]=NULL;
  271.             temp.color[5]=NULL;
  272.             temp.color[6]=NULL;
  273.             temp.color[7]=NULL;
  274.             temp.color[8]=NULL;
  275.             break;
  276.         case 38:
  277.             temp.color[0]=NULL;
  278.             temp.color[1]=NULL;
  279.             temp.color[2]=NULL;
  280.             temp.color[3]=NULL;
  281.             temp.color[4]=NULL;
  282.             temp.color[5]=NULL;
  283.             temp.color[6]="#d8dcb8";
  284.             temp.color[7]="#d8dcb8";
  285.             temp.color[8]="#d8dcb8";
  286.             break;
  287.         case 39:
  288.             temp.color[0]=NULL;
  289.             temp.color[1]=NULL;
  290.             temp.color[2]=NULL;
  291.             temp.color[3]="#b8dcb8";
  292.             temp.color[4]="#b8dcb8";
  293.             temp.color[5]=NULL;
  294.             temp.color[6]="#b8dcb8";
  295.             temp.color[7]="#b8dcb8";
  296.             temp.color[8]=NULL;
  297.             break;
  298.         case 35:
  299.             /*works on its own*/
  300.         case 29:
  301.             /*works on its own*/
  302.         case 36:
  303.         case 28:
  304.         case 26:
  305.         case 16:
  306.         case 17:
  307.         case 20:
  308.         case 21:
  309.         case 22:
  310.         default:
  311.             temp.color[0]=NULL;
  312.             temp.color[1]=NULL;
  313.             temp.color[2]=NULL;
  314.             temp.color[3]=NULL;
  315.             temp.color[4]=NULL;
  316.             temp.color[5]=NULL;
  317.             temp.color[6]=NULL;
  318.             temp.color[7]=NULL;
  319.             temp.color[8]=NULL;
  320.             break;
  321.         }
  322.  
  323.     if ((rowcount == 1) && (apap->ourtap.tlp.fHdrRows))
  324.         {
  325.         if (apap->ourtap.tlp.fShading)
  326.             {
  327.             if ((colcount == 0) && (apap->ourtap.tlp.fHdrCols))
  328.                 acolor=temp.color[0];
  329.             else if (isodd(colcount))
  330.                 acolor=temp.color[2];
  331.             else
  332.                 acolor=temp.color[1];
  333.             }
  334.         }
  335.     else if (isodd(rowcount))
  336.         {
  337.         if (apap->ourtap.tlp.fShading)
  338.             {
  339.             if ((colcount == 0) && (apap->ourtap.tlp.fHdrCols))
  340.                 acolor=temp.color[3];
  341.             else if (isodd(colcount))
  342.                 acolor=temp.color[5];
  343.             else
  344.                 acolor=temp.color[4];
  345.             }
  346.         }
  347.     else
  348.         {
  349.         if (apap->ourtap.tlp.fShading)
  350.             {
  351.             if ((colcount == 0) && (apap->ourtap.tlp.fHdrCols))
  352.                 acolor=temp.color[6];
  353.             else if (isodd(colcount))
  354.                 acolor=temp.color[8];
  355.             else
  356.                 acolor=temp.color[7];
  357.             }
  358.         }
  359.  
  360.     if (acolor != NULL)
  361.         {
  362.         if (!(apap->ourtap.tlp.fColor))
  363.             {
  364.             red[0] = acolor[1];
  365.             red[1] = acolor[2];
  366.             red[2] = '\0';
  367.             green[0] = acolor[3];
  368.             green[1] = acolor[4];
  369.             green[2] = '\0';
  370.             blue[0] = acolor[5];
  371.             blue[1] = acolor[6];
  372.             blue[2] = '\0';
  373.             templ = (strtol(red,NULL,16)+strtol(blue,NULL,16)+strtol(green,NULL,16))/3;
  374.             sprintf(backgroundcolor,"#%.2x%.2x%.2x",templ,templ,templ);
  375.             }
  376.         else
  377.             strcpy(backgroundcolor,acolor);
  378.             
  379.         fprintf(outputfile," bgcolor=\"%s\">\n",backgroundcolor); 
  380.         return(1);
  381.         }
  382.     return(0);
  383.     }
  384.  
  385. void output_tablebg(pap *apap)
  386.     {
  387.     int shademodifier = 100;
  388.     int foreground;
  389.  
  390.     if (apap->ourtap.tlp.itl)
  391.         {
  392.         if (do_tablelooks(apap))
  393.             return;
  394.         }
  395.     
  396.     if (apap->ourtap.cell_pattern[colcount] != 0)
  397.         {
  398.         if ((apap->ourtap.cell_pattern[colcount] > 13) && (apap->ourtap.cell_pattern[colcount] < 35) )
  399.             {
  400.             foreground = apap->ourtap.cell_fronts[colcount];
  401.             if (foreground == 0) foreground=1;
  402.             fprintf(outputfile," background=\"%s/%d.gif\"",patterndir(),(apap->ourtap.cell_pattern[colcount])+((foreground-1)*12));
  403.             }
  404.         else
  405.             {
  406.             switch (apap->ourtap.cell_pattern[colcount])
  407.                 {
  408.                 case 1:
  409.                     shademodifier = 100;
  410.                     break;
  411.                 case 2:
  412.                     shademodifier = 95;
  413.                     break;
  414.                 case 3:
  415.                     shademodifier = 90;
  416.                     break;
  417.                 case 4:
  418.                     shademodifier = 80;
  419.                     break;
  420.                 case 5:
  421.                     shademodifier = 75;
  422.                     break;
  423.                 case 6:
  424.                     shademodifier = 70;
  425.                     break;
  426.                 case 7:
  427.                     shademodifier = 60;
  428.                     break;
  429.                 case 8:
  430.                     shademodifier = 50;
  431.                     break;
  432.                 case 9:
  433.                     shademodifier = 40;
  434.                     break;
  435.                 case 10:
  436.                     shademodifier = 30;
  437.                     break;
  438.                 case 11:
  439.                     shademodifier = 25;
  440.                     break;
  441.                 case 12:
  442.                     shademodifier = 20;
  443.                     break;
  444.                 case 13:
  445.                     shademodifier = 10;
  446.                     break;
  447.                 case 35:
  448.                     shademodifier = 97.5;
  449.                     break;
  450.                 case 36:
  451.                     shademodifier = 92.5;
  452.                     break;
  453.                 case 37:
  454.                     shademodifier = 87.5;
  455.                     break;
  456.                 case 38:
  457.                     shademodifier = 85;
  458.                     break;
  459.                 case 39:
  460.                     shademodifier = 82.5;
  461.                     break;
  462.                 case 40:
  463.                     shademodifier = 77.5;
  464.                     break;
  465.                 case 41:
  466.                     shademodifier = 82.5;
  467.                     break;
  468.                 case 42:
  469.                     shademodifier = 67.5;
  470.                     break;
  471.                 case 43:
  472.                     shademodifier = 65;
  473.                     break;
  474.                 case 44:
  475.                     shademodifier = 62.5;
  476.                     break;
  477.                 case 45:
  478.                     shademodifier = 57.5;
  479.                     break;
  480.                 case 46:
  481.                     shademodifier = 55;
  482.                     break;
  483.                 case 47:
  484.                     shademodifier = 52.5;
  485.                     break;
  486.                 case 48:
  487.                     shademodifier = 47.5;
  488.                     break;
  489.                 case 49:
  490.                     shademodifier = 45;
  491.                     break;
  492.                 case 50:
  493.                     shademodifier = 42.5;
  494.                     break;
  495.                 case 51:
  496.                     shademodifier = 37.5;
  497.                     break;
  498.                 case 52:
  499.                     shademodifier = 35;
  500.                     break;
  501.                 case 53:
  502.                     shademodifier = 32.5;
  503.                     break;
  504.                 case 54:
  505.                     shademodifier = 27.5;
  506.                     break;
  507.                 case 55:
  508.                     shademodifier = 22.5;
  509.                     break;
  510.                 case 56:
  511.                     shademodifier = 17.5;
  512.                     break;
  513.                 case 57:
  514.                     shademodifier = 15;
  515.                     break;
  516.                 case 58:
  517.                     shademodifier = 12.5;
  518.                     break;
  519.                 case 59:
  520.                     shademodifier = 7.5;
  521.                     break;
  522.                 case 60:
  523.                     shademodifier = 5;
  524.                     break;
  525.                 case 61:
  526.                     shademodifier = 2.5;
  527.                     break;
  528.                 case 62:
  529.                     shademodifier = 2;
  530.                     break;
  531.                 default:
  532.                     shademodifier = 100;
  533.                     break;
  534.                 }
  535.             }
  536.         }
  537.  
  538.     if (apap->ourtap.cell_backs[colcount] != 0)
  539.         {
  540.         fprintf(outputfile," bgcolor=\"#%.2x",(colorlookupr[apap->ourtap.cell_backs[colcount]])*shademodifier/100);
  541.         fprintf(outputfile,"%.2x",(colorlookupg[apap->ourtap.cell_backs[colcount]])*shademodifier/100);
  542.         fprintf(outputfile,"%.2x",(colorlookupb[apap->ourtap.cell_backs[colcount]])*shademodifier/100);
  543.         fprintf(outputfile,"\"");
  544.         sprintf(backgroundcolor,"#%.2x%.2x%.2x",(colorlookupr[apap->ourtap.cell_backs[colcount]])*shademodifier/100,(colorlookupg[apap->ourtap.cell_backs[colcount]])*shademodifier/100,(colorlookupb[apap->ourtap.cell_backs[colcount]])*shademodifier/100);
  545.         }
  546.  
  547.     fprintf(outputfile,">\n");
  548.     }
  549.  
  550.